﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Numerics;
using System.Runtime.Intrinsics;
using System.Runtime.Intrinsics.X86;

namespace KartLibrary.Encrypt
{
    public static class Rho5Key
    {
        private static byte[] _mem_F4CAD0 = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE4, 0x0A, 0xA8, 0x03, 0x7C, 0x3F,
    0x1B, 0xF7, 0x51, 0x2D, 0x38, 0x05, 0x3E, 0x3D, 0x00, 0x00, 0xDE, 0xB6,
    0x9D, 0x57, 0x8B, 0x3F, 0x05, 0x30, 0xFB, 0xFE, 0x09, 0x6B, 0x38, 0x3D,
    0x00, 0x80, 0x96, 0xDE, 0xAE, 0x70, 0x94, 0x3F, 0x1D, 0xE1, 0x91, 0x0C,
    0x78, 0xFC, 0x39, 0x3D, 0x00, 0x00, 0x3E, 0x8E, 0x2E, 0xDA, 0x9A, 0x3F,
    0x1A, 0x70, 0x6E, 0x9E, 0xD1, 0x1B, 0x35, 0x3D, 0x00, 0xC0, 0x59, 0xF7,
    0xD8, 0xAD, 0xA0, 0x3F, 0xA1, 0x00, 0x00, 0x09, 0x51, 0x2A, 0x1B, 0x3D,
    0x00, 0x00, 0x63, 0xC6, 0xF7, 0xFA, 0xA3, 0x3F, 0x3F, 0xF5, 0x81, 0xF1,
    0x62, 0x36, 0x08, 0x3D, 0x00, 0xC0, 0xEF, 0x59, 0x1E, 0x17, 0xA7, 0x3F,
    0xDB, 0x54, 0xCF, 0x3F, 0x1A, 0xBD, 0x16, 0x3D, 0x00, 0x00, 0xC7, 0x02,
    0x90, 0x3E, 0xAA, 0x3F, 0x86, 0xD3, 0xD0, 0xC8, 0x57, 0xD2, 0x21, 0x3D,
    0x00, 0x40, 0xC3, 0x2D, 0x33, 0x32, 0xAD, 0x3F, 0x1F, 0x44, 0xD9, 0xF8,
    0xDB, 0x7A, 0x1B, 0x3D, 0x00, 0xA0, 0xD6, 0x70, 0x11, 0x28, 0xB0, 0x3F,
    0x76, 0x50, 0xAF, 0x28, 0x8B, 0xF3, 0x1B, 0x3D, 0x00, 0x60, 0xF1, 0xEC,
    0x1F, 0x9C, 0xB1, 0x3F, 0xD4, 0x55, 0x53, 0x1E, 0x3F, 0xE0, 0x3E, 0x3D,
    0x00, 0xC0, 0x65, 0xFD, 0x1B, 0x15, 0xB3, 0x3F, 0x95, 0x67, 0x8C, 0x04,
    0x80, 0xE2, 0x37, 0x3D, 0x00, 0x60, 0xC5, 0x80, 0x27, 0x93, 0xB4, 0x3F,
    0xF3, 0xA5, 0x62, 0xCD, 0xAC, 0xC4, 0x2F, 0x3D, 0x00, 0x80, 0xE9, 0x5E,
    0x73, 0x05, 0xB6, 0x3F, 0x9F, 0x7D, 0xA1, 0x23, 0xCF, 0xC3, 0x17, 0x3D,
    0x00, 0xA0, 0x4A, 0x8D, 0x77, 0x6B, 0xB7, 0x3F, 0x7A, 0x6E, 0xA0, 0x12,
    0xE8, 0x03, 0x1C, 0x3D, 0x00, 0xC0, 0xE4, 0x4E, 0x0B, 0xD6, 0xB8, 0x3F,
    0x82, 0x4C, 0x4E, 0xCC, 0xE5, 0x00, 0x39, 0x3D, 0x00, 0x40, 0x24, 0x22,
    0xB4, 0x33, 0xBA, 0x3F, 0x35, 0x57, 0x67, 0x34, 0x70, 0xF1, 0x36, 0x3D,
    0x00, 0x80, 0xA7, 0x54, 0xB6, 0x95, 0xBB, 0x3F, 0xC7, 0x4E, 0x76, 0x24,
    0x5E, 0x0E, 0x29, 0x3D, 0x00, 0xE0, 0xE9, 0x02, 0x26, 0xEA, 0xBC, 0x3F,
    0xCB, 0xCB, 0x2E, 0x82, 0x29, 0xD1, 0xEB, 0x3C, 0x00, 0xA0, 0x6C, 0xC1,
    0xB4, 0x42, 0xBE, 0x3F, 0xE9, 0x4D, 0x8D, 0xF3, 0x0F, 0xE5, 0x25, 0x3D,
    0x00, 0x60, 0x6A, 0xB1, 0x05, 0x8D, 0xBF, 0x3F, 0xA7, 0x77, 0xB7, 0xA2,
    0xA5, 0x8E, 0x2A, 0x3D, 0x00, 0x20, 0x3C, 0xC5, 0x9B, 0x6D, 0xC0, 0x3F,
    0x45, 0xFA, 0xE1, 0xEE, 0x8D, 0x81, 0x32, 0x3D, 0x00, 0x00, 0xDE, 0xAC,
    0x3E, 0x0D, 0xC1, 0x3F, 0xAE, 0xF0, 0x83, 0xCB, 0x45, 0x8A, 0x1E, 0x3D,
    0x00, 0xD0, 0x74, 0x15, 0x3F, 0xB8, 0xC1, 0x3F, 0xD4, 0xFF, 0x93, 0xF1,
    0x19, 0x0B, 0x01, 0x3D, 0x00, 0xD0, 0x4F, 0x05, 0xFE, 0x51, 0xC2, 0x3F,
    0xC0, 0x77, 0x28, 0x40, 0x09, 0xAC, 0xFE, 0x3C, 0x00, 0xE0, 0xF4, 0x1C,
    0x30, 0xF7, 0xC2, 0x3F, 0x41, 0x63, 0x1A, 0x0D, 0xC7, 0xF5, 0x30, 0x3D,
    0x00, 0x50, 0x79, 0x0F, 0x70, 0x94, 0xC3, 0x3F, 0x64, 0x72, 0x1A, 0x79,
    0x3F, 0xE9, 0x1F, 0x3D, 0x00, 0xA0, 0xB4, 0x53, 0x74, 0x29, 0xC4, 0x3F,
    0x34, 0x4B, 0xBC, 0xC5, 0x09, 0xCE, 0x3E, 0x3D, 0x00, 0xC0, 0xFE, 0xFA,
    0x24, 0xCA, 0xC4, 0x3F, 0x51, 0x68, 0xE6, 0x42, 0x43, 0x20, 0x2E, 0x3D,
    0x00, 0x30, 0x09, 0x12, 0x75, 0x62, 0xC5, 0x3F, 0x2D, 0x17, 0xAA, 0xB3,
    0xEC, 0xDF, 0x30, 0x3D, 0x00, 0x00, 0xF6, 0x1A, 0x1A, 0xF2, 0xC5, 0x3F,
    0x13, 0x61, 0x3E, 0x2D, 0x1B, 0xEF, 0x3F, 0x3D, 0x00, 0x00, 0x90, 0x16,
    0xA2, 0x8D, 0xC6, 0x3F, 0xD0, 0x99, 0x96, 0xFC, 0x2C, 0x94, 0xED, 0x3C,
    0x00, 0x00, 0x28, 0x6C, 0x58, 0x20, 0xC7, 0x3F, 0xCD, 0x54, 0x40, 0x62,
    0xA8, 0x20, 0x3D, 0x3D, 0x00, 0x50, 0x1C, 0xFF, 0x95, 0xB4, 0xC7, 0x3F,
    0xC5, 0x33, 0x91, 0x68, 0x2C, 0x01, 0x25, 0x3D, 0x00, 0xA0, 0xCE, 0x66,
    0xA2, 0x3F, 0xC8, 0x3F, 0x9F, 0x23, 0x87, 0x86, 0xC1, 0xC6, 0x20, 0x3D,
    0x00, 0xF0, 0x56, 0x0C, 0x0E, 0xCC, 0xC8, 0x3F, 0xDF, 0xA0, 0xCF, 0xA1,
    0xB4, 0xE3, 0x36, 0x3D, 0x00, 0xD0, 0xE7, 0xEF, 0xDF, 0x59, 0xC9, 0x3F,
    0xE5, 0xE0, 0xFF, 0x7A, 0x02, 0x20, 0x24, 0x3D, 0x00, 0xC0, 0xD2, 0x47,
    0x1F, 0xE9, 0xC9, 0x3F, 0x20, 0x24, 0xF2, 0x6C, 0x0E, 0x33, 0x35, 0x3D,
    0x00, 0x40, 0x03, 0x8B, 0xA4, 0x6E, 0xCA, 0x3F, 0x7F, 0x5B, 0x2B, 0xB9,
    0xAC, 0xEB, 0x33, 0x3D, 0x00, 0xF0, 0x52, 0xC5, 0xB7, 0x00, 0xCB, 0x3F,
    0x73, 0xAA, 0x64, 0x4C, 0x69, 0xF4, 0x3D, 0x3D, 0x00, 0x70, 0xF9, 0x7C,
    0xE6, 0x88, 0xCB, 0x3F, 0x72, 0xA0, 0x78, 0x22, 0x23, 0xFF, 0x32, 0x3D,
    0x00, 0x40, 0x2E, 0xBA, 0xE3, 0x06, 0xCC, 0x3F, 0x7C, 0xBD, 0x55, 0xCD,
    0x15, 0xCB, 0x32, 0x3D, 0x00, 0x00, 0x6C, 0xD4, 0x9D, 0x91, 0xCC, 0x3F,
    0x72, 0xAC, 0xE6, 0x94, 0x46, 0xB6, 0x0E, 0x3D, 0x00, 0x90, 0x13, 0x61,
    0xFB, 0x11, 0xCD, 0x3F, 0x0B, 0x96, 0xAE, 0x91, 0xDB, 0x34, 0x1A, 0x3D,
    0x00, 0x10, 0xFD, 0xAB, 0x59, 0x9F, 0xCD, 0x3F, 0x73, 0x6C, 0xD7, 0xBC,
    0x23, 0x7B, 0x20, 0x3D, 0x00, 0x60, 0x7E, 0x52, 0x3D, 0x16, 0xCE, 0x3F,
    0xE4, 0x93, 0x2E, 0xF2, 0x69, 0x9D, 0x31, 0x3D, 0x00, 0xA0, 0x02, 0xDC,
    0x2C, 0x9A, 0xCE, 0x3F, 0x87, 0xF1, 0x81, 0x90, 0xF5, 0xEB, 0x20, 0x3D,
    0x00, 0x90, 0x94, 0x76, 0x58, 0x1F, 0xCF, 0x3F, 0x00, 0x90, 0x17, 0xEA,
    0xEB, 0xAF, 0x07, 0x3D, 0x00, 0x70, 0xDB, 0x1F, 0x80, 0x99, 0xCF, 0x3F,
    0x68, 0x96, 0xF2, 0xF7, 0x7D, 0x73, 0x22, 0x3D, 0x00, 0xD0, 0x09, 0x45,
    0x5B, 0x0A, 0xD0, 0x3F, 0x7F, 0x25, 0x53, 0x23, 0x5B, 0x6B, 0x1F, 0x3D,
    0x00, 0xE8, 0xFB, 0x37, 0x80, 0x48, 0xD0, 0x3F, 0xC6, 0x12, 0xB9, 0xB9,
    0x93, 0x6A, 0x1B, 0x3D, 0x00, 0xA8, 0x21, 0x56, 0x31, 0x87, 0xD0, 0x3F,
    0xAE, 0xF3, 0xBF, 0x7D, 0xDA, 0x61, 0x32, 0x3D, 0x00, 0xB8, 0x6A, 0x1D,
    0x71, 0xC6, 0xD0, 0x3F, 0x32, 0xC1, 0x30, 0x8D, 0x4A, 0xE9, 0x35, 0x3D,
    0x00, 0xA8, 0xD2, 0xCD, 0xD9, 0xFF, 0xD0, 0x3F, 0x80, 0x9D, 0xF1, 0xF6,
    0x0E, 0x35, 0x16, 0x3D, 0x00, 0x78, 0xC2, 0xBE, 0x2F, 0x40, 0xD1, 0x3F,
    0x8B, 0xBA, 0x22, 0x42, 0x20, 0x3C, 0x31, 0x3D, 0x00, 0x90, 0x69, 0x19,
    0x97, 0x7A, 0xD1, 0x3F, 0x99, 0x5C, 0x2D, 0x21, 0x79, 0xF2, 0x21, 0x3D,
    0x00, 0x58, 0xAC, 0x30, 0x7A, 0xB5, 0xD1, 0x3F, 0x7E, 0x84, 0xFF, 0x62,
    0x3E, 0xCF, 0x3D, 0x3D, 0x00, 0xB8, 0x3A, 0x15, 0xDB, 0xF0, 0xD1, 0x3F,
    0xDF, 0x0E, 0x0C, 0x23, 0x2E, 0x58, 0x27, 0x3D, 0x00, 0x48, 0x42, 0x4F,
    0x0E, 0x26, 0xD2, 0x3F, 0xF9, 0x1F, 0xA4, 0x28, 0x10, 0x7E, 0x15, 0x3D,
    0x00, 0x78, 0x11, 0xA6, 0x62, 0x62, 0xD2, 0x3F, 0x12, 0x19, 0x0C, 0x2E,
    0x1A, 0xB0, 0x12, 0x3D, 0x00, 0xD8, 0x43, 0xC0, 0x71, 0x98, 0xD2, 0x3F,
    0x79, 0x37, 0x9E, 0xAC, 0x69, 0x39, 0x2B, 0x3D, 0x00, 0x80, 0x0B, 0x76,
    0xC1, 0xD5, 0xD2, 0x3F, 0xBF, 0x08, 0x0F, 0xBE, 0xDE, 0xEA, 0x3A, 0x3D,
    0x00, 0x30, 0xBB, 0xA7, 0xB3, 0x0C, 0xD3, 0x3F, 0x32, 0xD8, 0xB6, 0x19,
    0x99, 0x92, 0x38, 0x3D, 0x00, 0x78, 0x9F, 0x50, 0x13, 0x44, 0xD3, 0x3F,
    0x58, 0xB3, 0x12, 0x1F, 0x31, 0xEF, 0x1F, 0x3D, 0x00, 0x00, 0x00, 0x00,
    0x00, 0xC0, 0xDB, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xDB, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0xDB, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x51, 0xDB, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xE8, 0xDA, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0xF0, 0xE8, 0xDA, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0xE0, 0x80, 0xDA, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x80, 0xDA, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0xC0, 0x1F, 0xDA, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0xC0, 0x1F, 0xDA, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xBE, 0xD9, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0xA0, 0xBE, 0xD9, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x80, 0x5D, 0xD9, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x80, 0x5D, 0xD9, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x50, 0x03, 0xD9, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x50, 0x03, 0xD9, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x20, 0xA9, 0xD8, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x20, 0xA9, 0xD8, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0xE0, 0x55, 0xD8, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x55, 0xD8, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x28, 0xFF, 0xD7, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x28, 0xFF, 0xD7, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x60, 0xAF, 0xD7, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x60, 0xAF, 0xD7, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x98, 0x5F, 0xD7, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x98, 0x5F, 0xD7, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0xD0, 0x0F, 0xD7, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0xD0, 0x0F, 0xD7, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC3, 0xD6, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x80, 0xC3, 0xD6, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0xA8, 0x7A, 0xD6, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xA8, 0x7A, 0xD6, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0xD0, 0x31, 0xD6, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0xD0, 0x31, 0xD6, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x70, 0xEC, 0xD5, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x70, 0xEC, 0xD5, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x10, 0xA7, 0xD5, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA7, 0xD5, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x28, 0x65, 0xD5, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x28, 0x65, 0xD5, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x40, 0x23, 0xD5, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x40, 0x23, 0xD5, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0xD0, 0xE4, 0xD4, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xE4, 0xD4, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x60, 0xA6, 0xD4, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x60, 0xA6, 0xD4, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x68, 0x6B, 0xD4, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x68, 0x6B, 0xD4, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0xF8, 0x2C, 0xD4, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x2C, 0xD4, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x78, 0xF5, 0xD3, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x78, 0xF5, 0xD3, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x80, 0xBA, 0xD3, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x80, 0xBA, 0xD3, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x83, 0xD3, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xD3, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0xF8, 0x4E, 0xD3, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0xF8, 0x4E, 0xD3, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x78, 0x17, 0xD3, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x78, 0x17, 0xD3, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x70, 0xE3, 0xD2, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x70, 0xE3, 0xD2, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0xE0, 0xB2, 0xD2, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0xE0, 0xB2, 0xD2, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xD8, 0x7E, 0xD2, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0xD8, 0x7E, 0xD2, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x48, 0x4E, 0xD2, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x48, 0x4E, 0xD2, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0xB8, 0x1D, 0xD2, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0xB8, 0x1D, 0xD2, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xF0, 0xD1, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0xA0, 0xF0, 0xD1, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x88, 0xC3, 0xD1, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x88, 0xC3, 0xD1, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x70, 0x96, 0xD1, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x70, 0x96, 0xD1, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x58, 0x69, 0xD1, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x58, 0x69, 0xD1, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0xB8, 0x3F, 0xD1, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xB8, 0x3F, 0xD1, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0xA0, 0x12, 0xD1, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0xA0, 0x12, 0xD1, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE9, 0xD0, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x00, 0xE9, 0xD0, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0xD8, 0xC2, 0xD0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xD8, 0xC2, 0xD0, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x38, 0x99, 0xD0, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x38, 0x99, 0xD0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x10, 0x73, 0xD0, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x10, 0x73, 0xD0, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x70, 0x49, 0xD0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x70, 0x49, 0xD0, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0xC0, 0x26, 0xD0, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0xC0, 0x26, 0xD0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0xD0, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0xD0, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0xE0, 0xB4, 0xCF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xB4, 0xCF, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x80, 0x6F, 0xCF, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x80, 0x6F, 0xCF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x20, 0x2A, 0xCF, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x20, 0x2A, 0xCF, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0xC0, 0xE4, 0xCE, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE4, 0xCE, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x60, 0x9F, 0xCE, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x60, 0x9F, 0xCE, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xCE, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xCE, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x90, 0x1B, 0xCE, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x90, 0x1B, 0xCE, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x30, 0xD6, 0xCD, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x30, 0xD6, 0xCD, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x97, 0xCD, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0xC0, 0x97, 0xCD, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x50, 0x59, 0xCD, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x50, 0x59, 0xCD, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0xE0, 0x1A, 0xCD, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0xE0, 0x1A, 0xCD, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x60, 0xE3, 0xCC, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x60, 0xE3, 0xCC, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0xF0, 0xA4, 0xCC, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xA4, 0xCC, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x70, 0x6D, 0xCC, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x70, 0x6D, 0xCC, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2F, 0xCC, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x2F, 0xCC, 0x3F
};
        private static byte[] _mem_F4CEE0 = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xDB, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x00, 0xC0, 0xDB, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0xDB, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0xDB, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0xF0, 0xE8, 0xDA, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xE8, 0xDA, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0xE0, 0x80, 0xDA, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0xE0, 0x80, 0xDA, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x1F, 0xDA, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0xC0, 0x1F, 0xDA, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0xA0, 0xBE, 0xD9, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xBE, 0xD9, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x80, 0x5D, 0xD9, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x80, 0x5D, 0xD9, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x50, 0x03, 0xD9, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x50, 0x03, 0xD9, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x20, 0xA9, 0xD8, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x20, 0xA9, 0xD8, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0xE0, 0x55, 0xD8, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0xE0, 0x55, 0xD8, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x28, 0xFF, 0xD7, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x28, 0xFF, 0xD7, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x60, 0xAF, 0xD7, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x60, 0xAF, 0xD7, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x98, 0x5F, 0xD7, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x98, 0x5F, 0xD7, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x0F, 0xD7, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0xD0, 0x0F, 0xD7, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x80, 0xC3, 0xD6, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC3, 0xD6, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0xA8, 0x7A, 0xD6, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0xA8, 0x7A, 0xD6, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x31, 0xD6, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0xD0, 0x31, 0xD6, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x70, 0xEC, 0xD5, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x70, 0xEC, 0xD5, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x10, 0xA7, 0xD5, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x10, 0xA7, 0xD5, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x28, 0x65, 0xD5, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x28, 0x65, 0xD5, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x40, 0x23, 0xD5, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x40, 0x23, 0xD5, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0xD0, 0xE4, 0xD4, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0xD0, 0xE4, 0xD4, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x60, 0xA6, 0xD4, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x60, 0xA6, 0xD4, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x68, 0x6B, 0xD4, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x68, 0x6B, 0xD4, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0xF8, 0x2C, 0xD4, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0xF8, 0x2C, 0xD4, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x78, 0xF5, 0xD3, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x78, 0xF5, 0xD3, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x80, 0xBA, 0xD3, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x80, 0xBA, 0xD3, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xD3, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x83, 0xD3, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x4E, 0xD3, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0xF8, 0x4E, 0xD3, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x78, 0x17, 0xD3, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x78, 0x17, 0xD3, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x70, 0xE3, 0xD2, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x70, 0xE3, 0xD2, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xB2, 0xD2, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0xE0, 0xB2, 0xD2, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0xD8, 0x7E, 0xD2, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xD8, 0x7E, 0xD2, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x48, 0x4E, 0xD2, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x48, 0x4E, 0xD2, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xB8, 0x1D, 0xD2, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0xB8, 0x1D, 0xD2, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0xA0, 0xF0, 0xD1, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xF0, 0xD1, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x88, 0xC3, 0xD1, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x88, 0xC3, 0xD1, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x70, 0x96, 0xD1, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x70, 0x96, 0xD1, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x58, 0x69, 0xD1, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x58, 0x69, 0xD1, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0xB8, 0x3F, 0xD1, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0xB8, 0x3F, 0xD1, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x12, 0xD1, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0xA0, 0x12, 0xD1, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x00, 0xE9, 0xD0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE9, 0xD0, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0xD8, 0xC2, 0xD0, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0xD8, 0xC2, 0xD0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x38, 0x99, 0xD0, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x38, 0x99, 0xD0, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x10, 0x73, 0xD0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x10, 0x73, 0xD0, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x70, 0x49, 0xD0, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x70, 0x49, 0xD0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x26, 0xD0, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0xC0, 0x26, 0xD0, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x98, 0x00, 0xD0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0xD0, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0xE0, 0xB4, 0xCF, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0xE0, 0xB4, 0xCF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x80, 0x6F, 0xCF, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x80, 0x6F, 0xCF, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x20, 0x2A, 0xCF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x20, 0x2A, 0xCF, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0xC0, 0xE4, 0xCE, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0xC0, 0xE4, 0xCE, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x60, 0x9F, 0xCE, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x60, 0x9F, 0xCE, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x5A, 0xCE, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xCE, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x90, 0x1B, 0xCE, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x90, 0x1B, 0xCE, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x30, 0xD6, 0xCD, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x30, 0xD6, 0xCD, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0xC0, 0x97, 0xCD, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x97, 0xCD, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x50, 0x59, 0xCD, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x50, 0x59, 0xCD, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x1A, 0xCD, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0xE0, 0x1A, 0xCD, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x60, 0xE3, 0xCC, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x60, 0xE3, 0xCC, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0xF0, 0xA4, 0xCC, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0xF0, 0xA4, 0xCC, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x70, 0x6D, 0xCC, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x70, 0x6D, 0xCC, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x2F, 0xCC, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2F, 0xCC, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x80, 0xF7, 0xCB, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x80, 0xF7, 0xCB, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xCB, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xCB, 0x3F, 0x70, 0x6F, 0x77, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x80, 0xC0, 0xEF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0xEF, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x80, 0x44, 0xEF, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0xC0, 0x07, 0xEF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCC, 0xEE, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x40, 0x91, 0xEE, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x40, 0x57, 0xEE, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xEE, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0xC0, 0xE5, 0xED, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x80, 0xAE, 0xED, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x77, 0xED, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0xC0, 0x41, 0xED, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0xC0, 0x0C, 0xED, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x40, 0xD8, 0xEC, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0xC0, 0xA4, 0xEC, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0xC0, 0x71, 0xEC, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0xEC, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xEC, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x40, 0xDD, 0xEB, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAD, 0xEB, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x80, 0x7D, 0xEB, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x80, 0x4E, 0xEB, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x40, 0x20, 0xEB, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x80, 0xF2, 0xEA, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x80, 0xC5, 0xEA, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0xEA, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x6D, 0xEA, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0xC0, 0x41, 0xEA, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x16, 0xEA, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x80, 0xEC, 0xE9, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0xC0, 0xC2, 0xE9, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x80, 0x99, 0xE9, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0xE9, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0xC0, 0x48, 0xE9, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0xE9, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0xC0, 0xF9, 0xE8, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x00, 0xD3, 0xE8, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xAC, 0xE8, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0xE8, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x80, 0x61, 0xE8, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3C, 0xE8, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xE8, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x00, 0xF4, 0xE7, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x40, 0xD0, 0xE7, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x40, 0xAD, 0xE7, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x40, 0x8A, 0xE7, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x67, 0xE7, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0xC0, 0x45, 0xE7, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x40, 0x24, 0xE7, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE7, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x00, 0xE2, 0xE6, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x80, 0xC1, 0xE6, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x40, 0xA1, 0xE6, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x80, 0x81, 0xE6, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x62, 0xE6, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x42, 0xE6, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0xE6, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x80, 0x05, 0xE6, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x40, 0xE7, 0xE5, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x80, 0xC9, 0xE5, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x00, 0xAC, 0xE5, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x8E, 0xE5, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0xE5, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x40, 0x55, 0xE5, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0xE5, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xE5, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x40, 0x01, 0xE5, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE6, 0xE4, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0xC0, 0xCA, 0xE4, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0xC0, 0xAF, 0xE4, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x40, 0x95, 0xE4, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xE4, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0xC0, 0x60, 0xE4, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0xE4, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x80, 0x2D, 0xE4, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x14, 0xE4, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xE3, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x40, 0xE2, 0xE3, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x80, 0xC9, 0xE3, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x40, 0xB1, 0xE3, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0xE3, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x40, 0x81, 0xE3, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x80, 0x69, 0xE3, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0xE3, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x3B, 0xE3, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0xE3, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xE3, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x80, 0xF6, 0xE2, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x40, 0xE0, 0xE2, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x00, 0xCA, 0xE2, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x00, 0xB4, 0xE2, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x40, 0x9E, 0xE2, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0xC0, 0x88, 0xE2, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x40, 0x73, 0xE2, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x40, 0x5E, 0xE2, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x40, 0x49, 0xE2, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x40, 0x34, 0xE2, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x1F, 0xE2, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x40, 0x0B, 0xE2, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x00, 0xF7, 0xE1, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE3, 0xE1, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x00, 0xCF, 0xE1, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x40, 0xBB, 0xE1, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xA7, 0xE1, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x40, 0x94, 0xE1, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x81, 0xE1, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xE1, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xE1, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x40, 0x48, 0xE1, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x35, 0xE1, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x40, 0x23, 0xE1, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x11, 0xE1, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xE0, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x00, 0xED, 0xE0, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x40, 0xDB, 0xE0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC9, 0xE0, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x00, 0xB8, 0xE0, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x80, 0xA6, 0xE0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x40, 0x95, 0xE0, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x40, 0x84, 0xE0, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x40, 0x73, 0xE0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x40, 0x62, 0xE0, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x80, 0x51, 0xE0, 0x3F
};
        private static byte[] _mem_F4A370 = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x43,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x43, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0xF0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x7F,
    0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x7F, 0x01, 0x00, 0x00, 0x00,
    0x00, 0x00, 0xF0, 0x7F
};
        private static byte[] _mem_F4A300 = {
    0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
    0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
    0xFF, 0xFF, 0x0F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xDB, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x00, 0xC0, 0xDB, 0x3F, 0x10, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x42,
    0x10, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x42, 0x00, 0x00, 0x00, 0x80,
    0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x7F,
    0x00, 0x78, 0x9F, 0x50, 0x13, 0x44, 0xD3, 0x3F, 0x58, 0xB3, 0x12, 0x1F,
    0x31, 0xEF, 0x1F, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x30, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x43,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0xF0, 0x7F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x7F,
    0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x7F, 0xF9, 0xCE, 0x97, 0xC6,
    0x14, 0x89, 0x35, 0x40, 0x3D, 0x81, 0x29, 0x64, 0x09, 0x93, 0x08, 0xC0,
    0x55, 0x84, 0x35, 0x6A, 0x80, 0xC9, 0x25, 0xC0, 0xD2, 0x35, 0x96, 0xDC,
    0x02, 0x6A, 0xFC, 0x3F, 0xF7, 0x99, 0x18, 0x7E, 0x9F, 0xAB, 0x16, 0x40,
    0x35, 0xB1, 0x77, 0xDC, 0xF2, 0x7A, 0xF2, 0xBF, 0x08, 0x41, 0x2E, 0xBF,
    0x6C, 0x7A, 0x5A, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x43, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x38, 0x43, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00,
    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F,
    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF,
    0xFF, 0xFF, 0xFF, 0x7F, 0x31, 0x67, 0x8A, 0xE7, 0x7F, 0xD8, 0x55, 0x3F,
    0xBF, 0xA0, 0x04, 0xD7, 0x08, 0x6B, 0xAC, 0x3F, 0x77, 0x4E, 0xBA, 0x6F,
    0xAB, 0xB2, 0x83, 0x3F, 0x8E, 0xC5, 0x82, 0xFF, 0xBD, 0xBF, 0xCE, 0x3F,
    0xEF, 0x39, 0xFA, 0xFE, 0x42, 0x2E, 0xE6, 0x3F, 0x00, 0x00, 0x00, 0xF8,
    0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x40, 0x47, 0x15, 0xF7, 0xBF,
    0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x7F, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0xF0, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x7F,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0xF8, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0xF0, 0x3F, 0x33, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x33, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0xF0, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x43,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x80, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55,
    0x55, 0x55, 0xC5, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xBF,
    0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x81, 0x3F, 0x55, 0x55, 0x55, 0x55,
    0x55, 0x55, 0xA5, 0x3F, 0x1A, 0xA0, 0x01, 0x1A, 0xA0, 0x01, 0x2A, 0xBF,
    0x17, 0x6C, 0xC1, 0x16, 0x6C, 0xC1, 0x56, 0xBF, 0x34, 0xC7, 0x56, 0xA5,
    0xE3, 0x1D, 0xC7, 0x3E, 0x1A, 0xA0, 0x01, 0x1A, 0xA0, 0x01, 0xFA, 0x3E,
    0x83, 0xC8, 0xC9, 0x6D, 0x30, 0x5F, 0x24, 0x40, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x38, 0x43, 0x00, 0x00, 0x60, 0x1A, 0x61, 0xB4, 0x90, 0x3D,
    0x00, 0x00, 0x60, 0x1A, 0x61, 0xB4, 0x90, 0x3D, 0x00, 0x00, 0x40, 0x54,
    0xFB, 0x21, 0xB9, 0x3F, 0x73, 0x70, 0x03, 0x2E, 0x8A, 0x19, 0x63, 0x3B,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x43, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x80, 0x3C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xBF,
    0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xC5, 0xBF, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0xE0, 0xBF, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x81, 0x3F,
    0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xA5, 0x3F, 0x1A, 0xA0, 0x01, 0x1A,
    0xA0, 0x01, 0x2A, 0xBF, 0x17, 0x6C, 0xC1, 0x16, 0x6C, 0xC1, 0x56, 0xBF,
    0x34, 0xC7, 0x56, 0xA5, 0xE3, 0x1D, 0xC7, 0x3E, 0x1A, 0xA0, 0x01, 0x1A,
    0xA0, 0x01, 0xFA, 0x3E, 0x83, 0xC8, 0xC9, 0x6D, 0x30, 0x5F, 0x24, 0x40,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x43, 0x00, 0x00, 0x60, 0x1A,
    0x61, 0xB4, 0x90, 0x3D, 0x00, 0x00, 0x60, 0x1A, 0x61, 0xB4, 0x90, 0x3D,
    0x00, 0x00, 0x40, 0x54, 0xFB, 0x21, 0xB9, 0x3F, 0x73, 0x70, 0x03, 0x2E,
    0x8A, 0x19, 0x63, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x43,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3C, 0xFF, 0xFF, 0xFF, 0xFF,
    0xFF, 0xFF, 0xEF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0xF0, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06,
    0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x03, 0x06, 0x00, 0x06, 0x02, 0x10,
    0x04, 0x45, 0x45, 0x45, 0x05, 0x05, 0x05, 0x05, 0x05, 0x35, 0x30, 0x00,
    0x50, 0x00, 0x00, 0x00, 0x00, 0x28, 0x20, 0x38, 0x50, 0x58, 0x07, 0x08,
    0x00, 0x37, 0x30, 0x30, 0x57, 0x50, 0x07, 0x00, 0x00, 0x20, 0x20, 0x08,
    0x07, 0x00, 0x00, 0x00, 0x08, 0x60, 0x68, 0x60, 0x60, 0x60, 0x60, 0x00,
    0x00, 0x78, 0x70, 0x78, 0x78, 0x78, 0x78, 0x08, 0x07, 0x08, 0x07, 0x00,
    0x07, 0x00, 0x08, 0x08, 0x08, 0x00, 0x00, 0x08, 0x07, 0x08, 0x00, 0x07,
    0x08, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x80, 0x80, 0x86,
    0x80, 0x81, 0x80, 0x00, 0x00, 0x10, 0x03, 0x86, 0x80, 0x86, 0x82, 0x80,
    0x14, 0x05, 0x05, 0x45, 0x45, 0x45, 0x85, 0x85, 0x85, 0x05, 0x00, 0x00,
    0x30, 0x30, 0x80, 0x50, 0x80, 0x88, 0x00, 0x08, 0x00, 0x28, 0x27, 0x38,
    0x50, 0x57, 0x80, 0x00, 0x07, 0x00, 0x37, 0x30, 0x30, 0x50, 0x50, 0x88,
    0x07, 0x00, 0x00, 0x20, 0x28, 0x80, 0x88, 0x80, 0x80, 0x00, 0x00, 0x00,
    0x60, 0x68, 0x60, 0x68, 0x68, 0x68, 0x08, 0x08, 0x07, 0x78, 0x77, 0x70,
    0x77, 0x70, 0x70, 0x08, 0x08, 0x00, 0x00, 0x08, 0x07, 0x08, 0x00, 0x07,
    0x08, 0x00, 0x07, 0x00, 0x28, 0x6E, 0x75, 0x6C, 0x6C, 0x29, 0x00, 0x00,
    0x28, 0x00, 0x6E, 0x00, 0x75, 0x00, 0x6C, 0x00, 0x6C, 0x00, 0x29, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE4, 0x0B, 0x54,
    0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x63, 0x2D, 0x5E, 0xC7, 0x6B,
    0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xEA, 0xED, 0x74, 0x46,
    0xD0, 0x9C, 0x2C, 0x9F, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x61, 0xF5, 0xB9,
    0xAB, 0xBF, 0xA4, 0x5C, 0xC3, 0xF1, 0x29, 0x63, 0x1D, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x64, 0xB5, 0xFD, 0x34, 0x05, 0xC4, 0xD2, 0x87, 0x66, 0x92,
    0xF9, 0x15, 0x3B, 0x6C, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
    0xD9, 0x90, 0x65, 0x94, 0x2C, 0x42, 0x62, 0xD7, 0x01, 0x45, 0x22, 0x9A,
    0x17, 0x26, 0x27, 0x4F, 0x9F, 0x00, 0x00, 0x00, 0x40, 0x02, 0x95, 0x07,
    0xC1, 0x89, 0x56, 0x24, 0x1C, 0xA7, 0xFA, 0xC5, 0x67, 0x6D, 0xC8, 0x73,
    0xDC, 0x6D, 0xAD, 0xEB, 0x72, 0x01, 0x00, 0x00, 0x00, 0x00, 0xC1, 0xCE,
    0x64, 0x27, 0xA2, 0x63, 0xCA, 0x18, 0xA4, 0xEF, 0x25, 0x7B, 0xD1, 0xCD,
    0x70, 0xEF, 0xDF, 0x6B, 0x1F, 0x3E, 0xEA, 0x9D, 0x5F, 0x03, 0x00, 0x00,
    0x00, 0x00, 0x00, 0xE4, 0x6E, 0xFE, 0xC3, 0xCD, 0x6A, 0x0C, 0xBC, 0x66,
    0x32, 0x1F, 0x39, 0x2E, 0x03, 0x02, 0x45, 0x5A, 0x25, 0xF8, 0xD2, 0x71,
    0x56, 0x4A, 0xC2, 0xC3, 0xDA, 0x07, 0x00, 0x00, 0x10, 0x8F, 0x2E, 0xA8,
    0x08, 0x43, 0xB2, 0xAA, 0x7C, 0x1A, 0x21, 0x8E, 0x40, 0xCE, 0x8A, 0xF3,
    0x0B, 0xCE, 0xC4, 0x84, 0x27, 0x0B, 0xEB, 0x7C, 0xC3, 0x94, 0x25, 0xAD,
    0x49, 0x12, 0x00, 0x00, 0x00, 0x40, 0x1A, 0xDD, 0xDA, 0x54, 0x9F, 0xCC,
    0xBF, 0x61, 0x59, 0xDC, 0xAB, 0xAB, 0x5C, 0xC7, 0x0C, 0x44, 0x05, 0xF5,
    0x67, 0x16, 0xBC, 0xD1, 0x52, 0xAF, 0xB7, 0xFB, 0x29, 0x8D, 0x8F, 0x60,
    0x94, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x0C, 0x8A, 0xBB, 0x17,
    0xA4, 0x8E, 0xAF, 0x56, 0xA9, 0x9F, 0x47, 0x06, 0x36, 0xB2, 0x4B, 0x5D,
    0xE0, 0x5F, 0xDC, 0x80, 0x0A, 0xAA, 0xFE, 0xF0, 0x40, 0xD9, 0x8E, 0xA8,
    0xD0, 0x80, 0x1A, 0x6B, 0x23, 0x63, 0x00, 0x00, 0x64, 0x38, 0x4C, 0x32,
    0x96, 0xC7, 0x57, 0x83, 0xD5, 0x42, 0x4A, 0xE4, 0x61, 0x22, 0xA9, 0xD9,
    0x3D, 0x10, 0x3C, 0xBD, 0x72, 0xF3, 0xE5, 0x91, 0x74, 0x15, 0x59, 0xC0,
    0x0D, 0xA6, 0x1D, 0xEC, 0x6C, 0xD9, 0x2A, 0x10, 0xD3, 0xE6, 0x00, 0x00,
    0x00, 0x10, 0x85, 0x1E, 0x5B, 0x61, 0x4F, 0x6E, 0x69, 0x2A, 0x7B, 0x18,
    0x1C, 0xE2, 0x50, 0x04, 0x2B, 0x34, 0xDD, 0x2F, 0xEE, 0x27, 0x50, 0x63,
    0x99, 0x71, 0xC9, 0xA6, 0x16, 0xE9, 0x4A, 0x8E, 0x28, 0x2E, 0x08, 0x17,
    0x6F, 0x6E, 0x49, 0x1A, 0x6E, 0x19, 0x02, 0x00, 0x00, 0x00, 0x40, 0x32,
    0x26, 0x40, 0xAD, 0x04, 0x50, 0x72, 0x1E, 0xF9, 0xD5, 0xD1, 0x94, 0x29,
    0xBB, 0xCD, 0x5B, 0x66, 0x96, 0x2E, 0x3B, 0xA2, 0xDB, 0x7D, 0xFA, 0x65,
    0xAC, 0x53, 0xDE, 0x77, 0x9B, 0xA2, 0x20, 0xB0, 0x53, 0xF9, 0xBF, 0xC6,
    0xAB, 0x25, 0x94, 0x4B, 0x4D, 0xE3, 0x04, 0x00, 0x81, 0x2D, 0xC3, 0xFB,
    0xF4, 0xD0, 0x22, 0x52, 0x50, 0x28, 0x0F, 0xB7, 0xF3, 0xF2, 0x13, 0x57,
    0x13, 0x14, 0x42, 0xDC, 0x7D, 0x5D, 0x39, 0xD6, 0x99, 0x19, 0x59, 0xF8,
    0x1C, 0x38, 0x92, 0x00, 0xD6, 0x14, 0xB3, 0x86, 0xB9, 0x77, 0xA5, 0x7A,
    0x61, 0xFE, 0xB7, 0x12, 0x6A, 0x61, 0x0B, 0x00, 0x00, 0xE4, 0x11, 0x1D,
    0x8D, 0x67, 0xC3, 0x56, 0x20, 0x1F, 0x94, 0x3A, 0x8B, 0x36, 0x09, 0x9B,
    0x08, 0x69, 0x70, 0xBD, 0xBE, 0x65, 0x76, 0x20, 0xEB, 0xC4, 0x26, 0x9B,
    0x9D, 0xE8, 0x67, 0x15, 0x6E, 0x09, 0x15, 0x9D, 0x2B, 0xF2, 0x32, 0x71,
    0x13, 0x51, 0x48, 0xBE, 0xCE, 0xA2, 0xE5, 0x45, 0x52, 0x7F, 0x1A, 0x00,
    0x00, 0x00, 0x10, 0xBB, 0x78, 0x94, 0xF7, 0x02, 0xC0, 0x74, 0x1B, 0x8C,
    0x00, 0x5D, 0xF0, 0xB0, 0x75, 0xC6, 0xDB, 0xA9, 0x14, 0xB9, 0xD9, 0xE2,
    0xDF, 0x72, 0x0F, 0x65, 0x4C, 0x4B, 0x28, 0x77, 0x16, 0xE0, 0xF6, 0x6D,
    0xC2, 0x91, 0x43, 0x51, 0xCF, 0xC9, 0x95, 0x27, 0x55, 0xAB, 0xE2, 0xD6,
    0x27, 0xE6, 0xA8, 0x9C, 0xA6, 0xB1, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x40,
    0x4A, 0xD0, 0xEC, 0xF4, 0xF0, 0x88, 0x23, 0x7F, 0xC5, 0x6D, 0x0A, 0x58,
    0x6F, 0x04, 0xBF, 0x43, 0xC3, 0x5D, 0x2D, 0xF8, 0x48, 0x08, 0x11, 0xEE,
    0x1C, 0x59, 0xA0, 0xFA, 0x28, 0xF0, 0xF4, 0xCD, 0x3F, 0xA5, 0x2E, 0x19,
    0xA0, 0x71, 0xD6, 0xBC, 0x87, 0x44, 0x69, 0x7D, 0x01, 0x6E, 0xF9, 0x10,
    0x9D, 0x56, 0x1A, 0x79, 0x75, 0xA4, 0x8F, 0x00, 0x00, 0xE1, 0xB2, 0xB9,
    0x3C, 0x75, 0x88, 0x82, 0x93, 0x16, 0x3F, 0xCD, 0x6B, 0x3A, 0xB4, 0x89,
    0xDE, 0x87, 0x9E, 0x08, 0x46, 0x45, 0x4D, 0x68, 0x0C, 0xA6, 0xDB, 0xFD,
    0x91, 0x93, 0x24, 0xDF, 0x13, 0xEC, 0x68, 0x30, 0x27, 0x44, 0xB4, 0x99,
    0xEE, 0x41, 0x81, 0xB6, 0xC3, 0xCA, 0x02, 0x58, 0xF1, 0x51, 0x68, 0xD9,
    0xA2, 0x25, 0x76, 0x7D, 0x8D, 0x71, 0x4E, 0x01, 0x00, 0x00, 0x64, 0xFB,
    0xE6, 0x83, 0x5A, 0xF2, 0x0F, 0xAD, 0x57, 0x94, 0x11, 0xB5, 0x80, 0x00,
    0x66, 0xB5, 0x29, 0x20, 0xCF, 0xD2, 0xC5, 0xD7, 0x7D, 0x6D, 0x3F, 0xA5,
    0x1C, 0x4D, 0xB7, 0xCD, 0xDE, 0x70, 0x9D, 0xDA, 0x3D, 0x41, 0x16, 0xB7,
    0x4E, 0xCA, 0xD0, 0x71, 0x98, 0x13, 0xE4, 0xD7, 0x90, 0x3A, 0x40, 0x4F,
    0xE2, 0x3F, 0xAB, 0xF9, 0x6F, 0x77, 0x4D, 0x26, 0xE6, 0xAF, 0x0A, 0x03,
    0x00, 0x00, 0x00, 0x10, 0x31, 0x55, 0xAB, 0x09, 0xD2, 0x58, 0x0C, 0xA6,
    0xCB, 0x26, 0x61, 0x56, 0x87, 0x83, 0x1C, 0x6A, 0xC1, 0xF4, 0x87, 0x75,
    0x76, 0xE8, 0x44, 0x2C, 0xCF, 0x47, 0xA0, 0x41, 0x9E, 0x05, 0x08, 0xC9,
    0x3E, 0x06, 0xBA, 0xA0, 0xE8, 0xC8, 0xCF, 0xE7, 0x55, 0xC0, 0xFA, 0xE1,
    0xB2, 0x44, 0x01, 0xEF, 0xB0, 0x7E, 0x20, 0x24, 0x73, 0x25, 0x72, 0xD1,
    0x81, 0xF9, 0xB8, 0xE4, 0xAE, 0x05, 0x15, 0x07, 0x40, 0x62, 0x3B, 0x7A,
    0x4F, 0x5D, 0xA4, 0xCE, 0x33, 0x41, 0xE2, 0x4F, 0x6D, 0x6D, 0x0F, 0x21,
    0xF2, 0x33, 0x56, 0xE5, 0x56, 0x13, 0xC1, 0x25, 0x97, 0xD7, 0xEB, 0x28,
    0x84, 0xEB, 0x96, 0xD3, 0x77, 0x3B, 0x49, 0x1E, 0xAE, 0x2D, 0x1F, 0x47,
    0x20, 0x38, 0xAD, 0x96, 0xD1, 0xCE, 0xFA, 0x8A, 0xDB, 0xCD, 0xDE, 0x4E,
    0x86, 0xC0, 0x68, 0x55, 0xA1, 0x5D, 0x69, 0xB2, 0x89, 0x3C, 0x12, 0x24,
    0x71, 0x45, 0x7D, 0x10, 0x00, 0x00, 0x41, 0x1C, 0x27, 0x4A, 0x17, 0x6E,
    0x57, 0xAE, 0x62, 0xEC, 0xAA, 0x89, 0x22, 0xEF, 0xDD, 0xFB, 0xA2, 0xB6,
    0xE4, 0xEF, 0xE1, 0x17, 0xF2, 0xBD, 0x66, 0x33, 0x80, 0x88, 0xB4, 0x37,
    0x3E, 0x2C, 0xB8, 0xBF, 0x91, 0xDE, 0xAC, 0x19
}; //F4A300~F4AAFF
   //4B9FD0, arg1: key, arg2: u1
   //function 4B9DF0(unsigned char *key, double u2)
   //4C19A0 1.23516 ver
        public unsafe static byte[] GetPackedFileKey(byte[] fileChksum, int u1, string FileName)
        {
            //if (!Sse2.IsSupported)
            //    throw new NotSupportedException("Your computer is not support SSE2.");
            if (!Vector128.IsHardwareAccelerated)
                Console.WriteLine("警告：当前环境不支持硬件加速向量操作，性能可能下降");
            byte[] fileNameData = Encoding.GetEncoding("UTF-16").GetBytes(FileName);
            uint temp_ebx = (uint)u1;
            double[] arr1 = new double[] { 0d, 4294967296d };
            double temp1 = arr1[(uint)u1 >> 31];
            int temp_esi = 0;
            if (Sse2.IsSupported)
            {
                Vector128<int> dv = Sse2.LoadVector128(&u1);
                Vector128<double> dr = Sse2.ConvertToVector128Double(dv);
                Vector128<double> temp2 = Sse2.LoadVector128(&temp1);
                dr = Sse2.AddScalar(dr, temp2);
                Vector128<double> a1 = func_E321D0(dr);
                temp_esi = Sse2.ConvertToInt32WithTruncation(a1);
            }
            else
            {
                Vector128<int> dv = Vector128.Create(u1);
                Vector128<double> dr = ConvertToVector128Double(dv);
                Vector128<double> temp2 = Vector128.Create(temp1);
                dr = Vector128.Add(dr, temp2);
                Vector128<double> a1 = func_g(dr);
                temp_esi = (int)Math.Truncate(a1.GetElement(0));
            }
            int[] arr2 = new int[temp_esi + 1];
            int i = temp_esi;
            while (temp_ebx != 0)
            {
                ulong a = 0xCCCCCCCDul * temp_ebx;
                uint b = (uint)((a >> 32) >> 3); //edx
                arr2[i--] = ((byte)temp_ebx) - (byte)((((b << 2) & 0xFF) + b) << 1);
                temp_ebx = b;
            }
            byte[] output = new byte[0x80];
            for (i = 0; i < output.Length; i++)
            {
                int a = (sbyte)arr2[i % arr2.Length];
                a = (int)(a & 0x80000001); //[ebp-08]
                if (a < 0)
                    a = ((a - 1) | -2) + 1;
                int b = (sbyte)arr2[(i + 1) % arr2.Length]; //[ebp-04]
                int c = (int)(((sbyte)arr2[(i + 2) % arr2.Length] + i) & 0x8000000F); //esi at 4BA09F
                if (c < 0)
                    c = ((c - 1) | -10) + 1;
                int outByte = ((b + i) % 5);//ecx at 4BA0BC
                outByte = (sbyte)((outByte + fileChksum[c] + a) & 0xFF);
                outByte *= (sbyte)fileNameData[(i % FileName.Length) << 1];
                outByte += i;
                output[i] = (byte)outByte;
            }
            return output;
        }

        private unsafe static Vector128<double> func_E321D0(Vector128<double> _inxmm0)
        {
            Vector128<double> xmm0 = _inxmm0;
            double temp_1 = 0; //the varible that stored at address:esp
            Sse2.StoreLow(&temp_1, xmm0);
            int temp_edx = 0;
            // E323E1 jmp to here
            while (true)
            {
                Vector128<double> xmm5 = xmm0;
                xmm0 = Sse2.UnpackLow(xmm0, xmm0);
                xmm5 = Sse2.ShiftRightLogical(xmm5.AsInt64(), 0x34).AsDouble();
                int temp_ecx = Sse2.Extract(xmm5.AsUInt16(), 0); //temp_2 is ecx on E32218
                long _temp_F4A320 = 0x000FFFFFFFFFFFFF;
                long _temp_F4A330 = 0x3FDBC00000000000;
                long _temp_F4A340 = 0x428FFFFFFFFFF810;
                long _temp_F4A350 = 0x7FFFFFFF80000000;
                long _temp_F4A390 = 0x3FF0000000000000;
                Vector128<double> xmm1 = LoadVector128LH((double*)&_temp_F4A320);
                Vector128<double> xmm2 = LoadVector128LH((double*)&_temp_F4A330);
                Vector128<double> xmm3 = LoadVector128LH((double*)&_temp_F4A390);
                Vector128<double> xmm4 = LoadVector128LH((double*)&_temp_F4A340);
                Vector128<double> xmm6 = LoadVector128LH((double*)&_temp_F4A350);
                xmm0 = Sse2.And(xmm0, xmm1);
                xmm0 = Sse2.Or(xmm0, xmm3);
                xmm4 = Sse2.Add(xmm4, xmm0);
                int temp_eax = Sse2.Extract(xmm4.AsUInt16(), 0); //eax at E32251
                temp_eax &= 0x7F0;
                xmm4 = LoadVector128FromByteArray(_mem_F4CEE0, temp_eax);
                Vector128<double> xmm7 = LoadVector128FromByteArray(_mem_F4CAD0, temp_eax);
                xmm6 = Sse2.And(xmm6, xmm0);
                xmm0 = Sse2.Subtract(xmm0, xmm6);
                xmm6 = Sse2.Multiply(xmm6, xmm4);
                xmm6 = Sse2.Subtract(xmm6, xmm2);
                xmm7 = Sse2.AddScalar(xmm7, xmm6);
                xmm0 = Sse2.Multiply(xmm0, xmm4);
                xmm4 = xmm0;
                xmm0 = Sse2.Add(xmm0, xmm6);
                temp_ecx &= 0xFFF;
                temp_ecx--;
                if (temp_ecx <= 0x7FD)
                {
                    temp_ecx -= 0x3FE;
                    temp_ecx += temp_edx;
                    xmm6 = Sse2.ConvertScalarToVector128Double(xmm6, temp_ecx);
                    xmm6 = Sse2.UnpackLow(xmm6, xmm6);
                    temp_ecx <<= 0x0A;
                    temp_eax += temp_ecx;
                    temp_ecx = 0x10;
                    temp_edx = 0;
                    if (temp_eax == 0)
                        temp_edx = temp_ecx;
                    xmm1 = LoadVector128FromByteArray(_mem_F4A300, 0xE0);
                    xmm3 = xmm0;
                    xmm2 = LoadVector128FromByteArray(_mem_F4A300, 0xF0);
                    xmm1 = Sse2.Multiply(xmm1, xmm0);
                    xmm3 = Sse2.Multiply(xmm3, xmm3);
                    xmm1 = Sse2.Add(xmm1, xmm2);
                    xmm2 = LoadVector128FromByteArray(_mem_F4A300, 0x100);
                    xmm3 = Sse2.MultiplyScalar(xmm3, xmm3);
                    xmm5 = LoadVector128FromByteArray(_mem_F4A300, 0x60);
                    xmm6 = Sse2.Multiply(xmm6, xmm5);
                    xmm5 = LoadVector128FromByteArray(_mem_F4A300, 0x70 + temp_edx);
                    xmm4 = Sse2.And(xmm4, xmm5);
                    xmm7 = Sse2.Add(xmm7, xmm6);
                    xmm7 = Sse2.Add(xmm7, xmm4);
                    xmm1 = Sse2.Multiply(xmm1, xmm0);
                    xmm3 = Sse2.MultiplyScalar(xmm3, xmm0);
                    xmm1 = Sse2.Add(xmm1, xmm2);
                    xmm2 = LoadVector128FromByteArray(_mem_F4A300, 0x110);
                    xmm2 = Sse2.Multiply(xmm2, xmm0);
                    xmm6 = xmm7;
                    xmm6 = Sse2.UnpackHigh(xmm6, xmm6);
                    xmm1 = Sse2.Multiply(xmm1, xmm3);
                    xmm0 = xmm1;
                    xmm1 = Sse2.Add(xmm1, xmm2);
                    xmm0 = Sse2.UnpackHigh(xmm0, xmm0);
                    xmm0 = Sse2.AddScalar(xmm0, xmm1);
                    xmm0 = Sse2.AddScalar(xmm0, xmm6);
                    xmm0 = Sse2.AddScalar(xmm0, xmm7);
                    return xmm0;
                }
                else
                {
                    xmm0 = Sse2.LoadLow(xmm0, &temp_1);

                }
            }
            return new Vector128<double>();
        }

        private unsafe static Vector128<double> func_g(Vector128<double> _inxmm0)
        {
            Vector128<double> xmm0 = _inxmm0;
            double temp_1 = 0;

            // 存储向量低64位到内存
            Vector64<double> lower64 = Vector128.GetLower(xmm0);
            *(double*)&temp_1 = lower64.GetElement(0);

            int temp_edx = 0;
            while (true)
            {
                Vector128<double> xmm5 = xmm0;
                // 手动实现UnpackLow功能：将两个向量的低半部分元素交错组合
                xmm0 = UnpackLow(xmm0, xmm0);

                // 处理移位操作
                xmm5 = Vector128.AsDouble(
                    Vector128.ShiftRightLogical(
                        Vector128.AsInt64(xmm5), 0x34)
                );

                // 提取元素
                int temp_ecx = Vector128.AsUInt16(xmm5).GetElement(0);

                // 常量定义
                long _temp_F4A320 = 0x000FFFFFFFFFFFFF;
                long _temp_F4A330 = 0x3FDBC00000000000;
                long _temp_F4A340 = 0x428FFFFFFFFFF810;
                long _temp_F4A350 = 0x7FFFFFFF80000000;
                long _temp_F4A390 = 0x3FF0000000000000;

                Vector128<double> xmm1 = LoadVector128LH((double*)&_temp_F4A320);
                Vector128<double> xmm2 = LoadVector128LH((double*)&_temp_F4A330);
                Vector128<double> xmm3 = LoadVector128LH((double*)&_temp_F4A390);
                Vector128<double> xmm4 = LoadVector128LH((double*)&_temp_F4A340);
                Vector128<double> xmm6 = LoadVector128LH((double*)&_temp_F4A350);

                // 使用BitwiseAnd替代And
                xmm0 = Vector128.BitwiseAnd(xmm0, xmm1);
                // 使用BitwiseOr替代Or
                xmm0 = Vector128.BitwiseOr(xmm0, xmm3);
                // 加法操作
                xmm4 = Vector128.Add(xmm4, xmm0);

                int temp_eax = Vector128.AsUInt16(xmm4).GetElement(0);
                temp_eax &= 0x7F0;

                xmm4 = LoadVector128FromByteArray(_mem_F4CEE0, temp_eax);
                Vector128<double> xmm7 = LoadVector128FromByteArray(_mem_F4CAD0, temp_eax);

                // 使用BitwiseAnd替代And
                xmm6 = Vector128.BitwiseAnd(xmm6, xmm0);
                // 减法操作
                xmm0 = Vector128.Subtract(xmm0, xmm6);
                // 乘法操作
                xmm6 = Vector128.Multiply(xmm6, xmm4);
                xmm6 = Vector128.Subtract(xmm6, xmm2);
                xmm7 = Vector128.Add(xmm7, xmm6);
                xmm0 = Vector128.Multiply(xmm0, xmm4);
                xmm4 = xmm0;
                xmm0 = Vector128.Add(xmm0, xmm6);

                temp_ecx &= 0xFFF;
                temp_ecx--;

                if (temp_ecx <= 0x7FD)
                {
                    temp_ecx -= 0x3FE;
                    temp_ecx += temp_edx;

                    // 创建标量向量并手动实现UnpackLow
                    Vector128<double> ecxVec = Vector128.Create((double)temp_ecx);
                    xmm6 = UnpackLow(ecxVec, ecxVec);

                    temp_ecx <<= 0x0A;
                    temp_eax += temp_ecx;
                    temp_ecx = 0x10;
                    temp_edx = 0;
                    if (temp_eax == 0)
                        temp_edx = temp_ecx;

                    xmm1 = LoadVector128FromByteArray(_mem_F4A300, 0xE0);
                    xmm3 = xmm0;
                    xmm2 = LoadVector128FromByteArray(_mem_F4A300, 0xF0);
                    xmm1 = Vector128.Multiply(xmm1, xmm0);
                    xmm3 = Vector128.Multiply(xmm3, xmm3);
                    xmm1 = Vector128.Add(xmm1, xmm2);
                    xmm2 = LoadVector128FromByteArray(_mem_F4A300, 0x100);
                    xmm3 = Vector128.Multiply(xmm3, xmm3);
                    xmm5 = LoadVector128FromByteArray(_mem_F4A300, 0x60);
                    xmm6 = Vector128.Multiply(xmm6, xmm5);
                    xmm5 = LoadVector128FromByteArray(_mem_F4A300, 0x70 + temp_edx);
                    // 使用BitwiseAnd替代And
                    xmm4 = Vector128.BitwiseAnd(xmm4, xmm5);
                    xmm7 = Vector128.Add(xmm7, xmm6);
                    xmm7 = Vector128.Add(xmm7, xmm4);
                    xmm1 = Vector128.Multiply(xmm1, xmm0);
                    xmm3 = Vector128.Multiply(xmm3, xmm0);
                    xmm1 = Vector128.Add(xmm1, xmm2);
                    xmm2 = LoadVector128FromByteArray(_mem_F4A300, 0x110);
                    xmm2 = Vector128.Multiply(xmm2, xmm0);
                    xmm6 = xmm7;
                    // 手动实现UnpackHigh功能
                    xmm6 = UnpackHigh(xmm6, xmm6);
                    xmm1 = Vector128.Multiply(xmm1, xmm3);
                    xmm0 = xmm1;
                    xmm1 = Vector128.Add(xmm1, xmm2);
                    // 手动实现UnpackHigh功能
                    xmm0 = UnpackHigh(xmm0, xmm0);
                    xmm0 = Vector128.Add(xmm0, xmm1);
                    xmm0 = Vector128.Add(xmm0, xmm6);
                    xmm0 = Vector128.Add(xmm0, xmm7);

                    return xmm0;
                }
                else
                {
                    // 从内存加载低64位到向量
                    Vector64<double> loadedLow = Vector64.Create(*(double*)&temp_1);
                    xmm0 = Vector128.WithLower(xmm0, loadedLow);
                }
            }
        }

        // 手动实现UnpackLow功能：将两个向量的低半部分元素交错组合
        private static Vector128<double> UnpackLow(Vector128<double> left, Vector128<double> right)
        {
            // 对于double类型的Vector128，每个向量包含2个元素
            double left0 = left.GetElement(0);
            double right0 = right.GetElement(0);

            // 组合成新的向量：[left0, right0]
            return Vector128.Create(left0, right0);
        }

        // 手动实现UnpackHigh功能：将两个向量的高半部分元素交错组合
        private static Vector128<double> UnpackHigh(Vector128<double> left, Vector128<double> right)
        {
            // 对于double类型的Vector128，每个向量包含2个元素
            double left1 = left.GetElement(1);
            double right1 = right.GetElement(1);

            // 组合成新的向量：[left1, right1]
            return Vector128.Create(left1, right1);
        }

        private unsafe static Vector128<double> LoadVector128LH(double* address)
        {
            Vector128<double> output = Vector128<double>.Zero;
            if (Sse2.IsSupported)
            {
                output = Sse2.LoadVector128(address).AsDouble();
                output = Sse2.LoadHigh(output, address);
            }
            else
            {
                // 从地址加载128位向量（低64位 + 高64位）
                output = Vector128.Load<double>(address);
                // 从相同地址加载64位数据作为新的高64位，并用WithUpper替换
                // 注意：原SSE2.LoadHigh是从address加载64位到高部分，这里保持相同逻辑
                Vector64<double> highPart = Vector64.Create(*address); // 从address加载64位数据
                output = Vector128.WithUpper(output, highPart); // 替换高64位
            }
            return output;
        }

        private unsafe static Vector128<double> LoadVector128FromByteArray(byte[] arr, int index)
        {
            // 验证输入，确保不会越界
            if (index < 0 || index + 16 > arr.Length)
                throw new ArgumentOutOfRangeException(nameof(index), "索引超出数组范围或剩余空间不足 16 字节");
            if (Sse2.IsSupported)
            {
                fixed (byte* address = arr)
                {
                    Vector128<double> output = Sse2.LoadVector128(address + index).AsDouble();
                    return output;
                }
            }
            else
            {
                fixed (byte* address = arr)
                {
                    // 使用通用的 Vector128 加载方法，不依赖特定架构指令
                    // 将字节指针转换为 double*，然后加载 128 位向量
                    double* doubleAddress = (double*)(address + index);
                    return Vector128.Load<double>(doubleAddress);
                }
            }
        }

        // 通用方法：将128位整数向量转换为双精度浮点数向量（支持int类型）
        private static Vector128<double> ConvertToVector128Double(Vector128<int> intVector)
        {
            // 提取 int 向量的 4 个元素（32 位 int，共 128 位）
            int int0 = intVector.GetElement(0);
            int int1 = intVector.GetElement(1);
            int int2 = intVector.GetElement(2);
            int int3 = intVector.GetElement(3);

            // 将 4 个 int 合并为 2 个 long（每个 long 由 2 个 int 组成）
            long long0 = (long)((uint)int1 << 32 | (uint)int0);
            long long1 = (long)((uint)int3 << 32 | (uint)int2);

            // 转换为 double 向量（2 个元素，每个对应一个 long）
            return Vector128.Create(
            (double)long0,
            (double)long1
            );
        }

        // 通用方法：将128位长整数向量转换为双精度浮点数向量（支持long类型）
        private static Vector128<double> ConvertToVector128Double(Vector128<long> longVector)
        {
            // 提取long向量的2个元素（Vector128<long>包含2个64位long）
            long long0 = longVector.GetElement(0);
            long long1 = longVector.GetElement(1);

            // 逐个转换为double，再组合为Vector128<double>
            return Vector128.Create(
                (double)long0,
                (double)long1
            );
        }

        public unsafe static int GetFileKey_U1(string anotherData)
        {
            int output = unchecked((int)0x811C9DC5);
            foreach (char cha in anotherData)
            {
                int temp = cha ^ output;
                output = temp * 0x01000193;
            }
            return output;
        }
    }
}